package facade;

import java.util.ArrayList;
import java.util.List;

public class RegistroAsientosComprados {
	private static RegistroAsientosComprados instance;
	private  List<VueloConAsientosComprados> vuelosConAsientosComprados = new ArrayList<VueloConAsientosComprados>();
	


	public static RegistroAsientosComprados getInstance(){
		if (instance == null) {
			instance = new RegistroAsientosComprados();			
		}		
		return instance;
	}
	
	public void registrarCompra(String codigoDeVuelo){		
			if (this.tenesAlVuelo(codigoDeVuelo)) {
				for (int i = 0; i < this.getVuelosConAsientosComprados().size(); i++) {
					if (this.getVuelosConAsientosComprados().get(i).getCodigoDelVuelo().equals(codigoDeVuelo)) {
						this.getVuelosConAsientosComprados().get(i).incrementarCantidadDeAsientosComprados();						
					}					
				}
				
			} else {
				this.getVuelosConAsientosComprados().add(new VueloConAsientosComprados(codigoDeVuelo));				
			}		
	}
	

	public void setVuelosConAsientosComprados(List<VueloConAsientosComprados> vuelosConAsientosComprados) {
		this.vuelosConAsientosComprados = vuelosConAsientosComprados;
	}
	
	public List<VueloConAsientosComprados> getVuelosConAsientosComprados() {
		return this.vuelosConAsientosComprados;
	}


	public double getCantidadDeVuelosComprados(String codigoDeVuelo){
		for (VueloConAsientosComprados vueloConAsientosComprados : this.getVuelosConAsientosComprados()) {
			if (vueloConAsientosComprados.getCodigoDelVuelo().equals(codigoDeVuelo)) {
				return(vueloConAsientosComprados.getCantidadDeAsientosCompradosEnELVuelo());				
			}			
		}
		return 0; //SI RETORNA POR ACA QUIERE DECIR DE QUE EL VUELO CON ESE CODIGO DE VUELO NO SE ENCUENTRA EN LA LISTA DE VUELOS CON ASIENTOS COMPRADOS, ES DECIR AUN NO SE COMPRARON ASIENTOS EN ESE VUELO. 
	}

	public boolean tenesAlVuelo(String codigoDeVuelo) {
		for (int i = 0; i < this.getVuelosConAsientosComprados().size(); i++) {
			if(this.getVuelosConAsientosComprados().get(i).getCodigoDelVuelo().equals(codigoDeVuelo)){
				return true;
			}
		}
		return false;
	}

}